category: auxiliary
step: 1_silos
sub_step: 1_normalize
in_main_macro: normalize
doc_status: readymacro custom_union_relations_source
Это немного переделанный вариант макроса из пакета dbt_utils, документация оригинального макроса: здесь
Этот макрос принимает следующие аргументы:
relations, column_override=none, include=[], exclude=[], source_column_name='_dbt_source_relation'
Этот макрос объединяет с помощью UNION ALL весь массив отношений, даже если столбцы в каждом отношении имеют разный порядок следования и/или некоторые столбцы отсутствуют в некоторых отношениях.
Все столбцы, относящиеся только к подмножеству этих отношений, в оригинальном макросе будут заполнены значением null, если оно отсутствует. В этом же варианте макроса вместо null - пустые строки '' или 0. Также здесь есть новый столбец (_dbt_source_relation), указывающий источник для каждой записи.
Этот макрос отличается от варианта custom_union_relations двумя вещами:
SELECT
toLowCardinality('{{ relation.name }}') AS {{ source_column_name }},
DateTime64, а нам нужен формат String для макроса normalize, поэтому колонку с таким типом данных макрос переводит в toString.